#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
    pid_t id=fork();
    if(id==0)
    {
        //子进程
        int cnt=3;
        while(cnt--)
        {
            printf("子进程：%d  父进程：%d  %d\n",getpid(),getppid(),cnt);
            sleep(1);
        }
        exit(10);//子进程退出
    }
    int status=0;
    while(1)
    {

        pid_t ret =waitpid(id,&status,WNOHANG);//第三个参数为0表示阻塞式等待，为WNOHANG表示非阻塞式等待
        if(ret==0)//等于0代表没有被等待的进程暂未退出
        {
            
        }   
        else if(ret>0)//waitpid调用成功，并且子进程退出，返回值为被等待子进程的pid
        {
            break;
        }
        else//等于-1表示等待失败 
        {
            break;
        }
    }



    //nt status=0;
    //id_t ret =waitpid(id,&status,0);
    //if(id>0) 
    //{
        //父进程
    //    printf("等待成功,返回值子进程的PID:%d,终止信号：%d,子进程退出码：%d\n",ret,(status&0X7F),((status>>8)&0XFF));
    //}
    //sleep(5);
    return 0;
}
